layui.define(["jquery", "layer", "form"], function (s) {
    var d = layui.jquery, b = layui.form, r = layui.layer, k = layui.device(), h = {
            read: (function () {
                var u = ".slider-item{height:38px;line-height:38px;background-color:#d0d0d0;position:relative;border: 1px solid white;}.slider-bg{position:absolute;width:40px;height:100%;z-index:100}.slider-btn{width:40px;height:96%;position:absolute;border:1px solid #ccc;cursor:move;text-align:center;background-color:#fff;user-select:none;color:#666;z-index:120}.slider-btn-success{font-size:26px}.slider-text{position:absolute;text-align:center;width:100%;height:100%;user-select:none;font-size:14px;color:#fff;z-index:120}.slider-error{animation:glow 800ms ease-out infinite alternate;}@keyframes glow{0%{border-color:#e6e6e6}100%{border-color:#ff5722}}",
                    v = document.createElement("style");
                v.innerHTML = u;
                v.type = "text/css";
                (d("head link:last")[0] && d("head link:last").after(v)) || d("head").append(v)
            })()
        }, m = function (u) {
            return u[0]
        }, o = function () {
            var u = this;
            return {
                isOk: function () {
                    return u.isOk.call(u)
                }, reset: function () {
                    return u.reset.call(u)
                }, version: "1.7.1"
            }
        }, g = "sliderVerify", i = "slider-btn", j = "slider-bg", q = "slider-text", a = "layui-icon-next",
        t = "layui-icon-ok-circle", f = "slider-btn-success", n = "layui-bg-green", c = "slider-error", p = "请拖动滑块验证",
        e = "验证通过", l = function (u) {
            var v = this;
            v.config = d.extend({}, v.config, u);
            v.render()
        };
    l.prototype.config = {elem: "", onOk: null, isOk: false, isAutoVerify: true, timer: null, bg: n, text: p};
    l.prototype.render = function () {
        var w = this, u = w.config, v = d(u.elem);
        if (!v[0]) {
            return
        }
        if (u.domid) {
            u.domid.remove()
        }
        u.domid = w.createIdNum();
        var x = d(['<div id="' + u.domid + '"' + (u.isAutoVerify ? 'lay-verify="sliderVerify"' : "") + 'class="slider-item">', '<div class="' + j + " " + u.bg + '"></div>', '<div class="' + q + '">' + u.text + "</div>", '<div class="' + i + ' layui-icon layui-icon-next"></div>'].join(""));
        v.hide().after(x);
        u.domid = d("#" + u.domid);
        w.events();
        if (u.isAutoVerify) {
            b.verify({
                sliderVerify: function (y, z) {
                    if (!y) {
                        z.classList.add(c);
                        return u.text
                    }
                }
            })
        }
    };
    l.prototype.isMobile = function () {
        return (k.os == "ios" || k.os == "android" || k.android || k.ios) || (k.weixin && typeof k.weixin === Boolean)
    };
    l.prototype.createIdNum = function () {
        return (g + (+new Date()).toString() + Math.random().toString().substr(2, 7))
    };
    l.prototype.isOk = function () {
        return this.config.isOk
    };
    l.prototype.error = function (u) {
        return r.msg(u, {icon: 5})
    };
    l.prototype.distance = function () {
        var u = this.config.container;
        return u.box.offsetWidth - u.btn.offsetWidth
    };
    l.prototype.reset = function () {
        this.config.isOk = false;
        return this.render()
    };
    l.prototype.resize = function (w) {
        var v = this, u = v.config.container;
        var w = w || v.distance();
        u.btn.style.left = w + "px";
        u.bg.style.width = w + "px"
    };
    l.prototype.cancelTransition = function () {
        var u = this.config.container;
        this.config.domid[0].classList.remove(c);
        u.btn.style.transition = "";
        u.bg.style.transition = ""
    };
    l.prototype.down = function (y) {
        var x = this, w = x.config, v = w.container, y = y || window.event, z = y.clientX || y.touches[0].clientX;
        x.cancelTransition();
        var u = function (A) {
            x.move(z, A)
        };
        x.events.move = u;
        if (x.isMobile()) {
            document.addEventListener("touchmove", x.events.move)
        } else {
            document.onmousemove = u
        }
        if (navigator.userAgent.indexOf("UCBrowser") > -1) {
            y.preventDefault()
        }
    };
    l.prototype.move = function (C, B) {
        var A = this, y = A.config, u = y.container;
        var B = B || window.event;
        var w = B.clientX || B.touches[0].clientX;
        var z = w - C;
        if (z > u.distance) {
            z = u.distance
        } else {
            if (z < 0) {
                z = 0
            }
        }
        u.btn.style.left = z + "px";
        u.bg.style.width = z + "px";
        if (z == u.distance) {
            u.text.innerHTML = e;
            var v = window.getComputedStyle ? window.getComputedStyle(u.bg, null) : u.bg.currentStyle;
            u.btn.style.border = "1px solid " + v.backgroundColor;
            u.btn.style.color = v.backgroundColor;
            u.btn.classList.remove(a);
            u.btn.classList.add(t, f);
            y.isOk = true;
            u.box.value = true;
            if (A.isMobile()) {
                u.btn.removeEventListener("touchstart", A.events.down, false);
                document.removeEventListener("touchmove", A.events.move, false)
            } else {
                u.btn.onmousedown = null;
                document.onmousemove = null
            }
            y.onOk && typeof y.onOk == "function" && y.onOk();
            return
        }
        var x = function (D) {
            A.stop(D)
        };
        A.events.seup = x;
        if (A.isMobile()) {
            document.addEventListener("touchend", x)
        } else {
            document.onmouseup = x
        }
    };
    l.prototype.stop = function (x) {
        var w = this, v = w.config, u = v.container;
        if (w.isOk()) {
            return
        } else {
            u.btn.style.left = 0;
            u.bg.style.width = 0;
            u.btn.style.transition = "left 1s";
            u.bg.style.transition = "width 1s"
        }
        document.onmousemove = null;
        document.onmouseup = null;
        if (w.isMobile()) {
            document.removeEventListener("touchmove", w.events.move, false);
            document.removeEventListener("touchend", w.events.seup, false)
        }
    };
    l.prototype.events = function () {
        var z = this, y = z.config;
        if (!y.domid) {
            return z.error("创建滑块验证失败")
        }
        var x = y.domid.find("." + i), w = y.domid.find("." + j), A = y.domid.find("." + q),
            v = {box: m(y.domid), btn: m(x), bg: m(w), text: m(A)};
        y.container = v;
        v.distance = z.distance();
        var B = function (C) {
            z.down(C)
        };
        z.events.down = B;
        if (z.isMobile()) {
            v.btn.addEventListener("touchstart", z.events.down)
        } else {
            v.btn.onmousedown = B
        }
        var u = d(window);
        u.on("resize", y.domid, function () {
            if (z.config.isOk) {
                z.resize()
            } else {
                clearTimeout(y.timer);
                y.timer = setTimeout(function () {
                    z.render()
                }, 400)
            }
        })
    };
    h.render = function (u) {
        var v = new l(u);
        return o.call(v)
    };
    s(g, h)
});